package logic

import (
	"gvb-server/Request"
	"gvb-server/global"
	"gvb-server/models"
	"gvb-server/utils"
)

// GetMsgListByUser 我的 - 用户列表
func (M Msg) GetMsgListByUser(s Request.MsgRequest) (utils.RList[models.Message], error) {
	var ad []models.Message
	var rb utils.RList[models.Message] // 注意这里

	// 获取总数
	global.DB.Model(models.Message{}).Count(&totalRows)
	if err != nil {
		return rb, err
	}

	// 开始分页
	if totalRows%int64(s.Size) == 0 {
		totalPages = totalRows / int64(s.Size)
	} else {
		totalPages = (totalRows / int64(s.Size)) + 1
	}

	// 为jwt获取的uid
	uid := 1
	err = global.DB.Limit(s.Size).Offset((s.Page-1)*s.Size).Where("send_user_id = ? or rev_user_id = ?", uid).Find(&ad).Error

	rb.List = ad
	rb.Page = s.Page
	rb.Size = s.Size
	rb.TotalPages = totalPages
	return rb, err
}

// GetMsgList 所有消息列表
func (M Msg) GetMsgList(s Request.MsgRequest) (utils.RList[models.Message], error) {
	var ad []models.Message
	var rb utils.RList[models.Message] // 注意这里

	// 获取总数
	global.DB.Model(models.Message{}).Count(&totalRows)
	if err != nil {
		return rb, err
	}

	// 开始分页
	if totalRows%int64(s.Size) == 0 {
		totalPages = totalRows / int64(s.Size)
	} else {
		totalPages = (totalRows / int64(s.Size)) + 1
	}

	err = global.DB.Limit(s.Size).Offset((s.Page - 1) * s.Size).Find(&ad).Error

	rb.List = ad
	rb.Page = s.Page
	rb.Size = s.Size
	rb.TotalPages = totalPages
	return rb, err
}

// CreateMsg 修改文件
func (M Msg) CreateMsg(s Request.MsgCreateRequest) (Pub utils.PubStatus) {
	Pub.Status = utils.SUCCESS
	var err error
	var sendUser, revcUser models.Users

	// sendUser 应该从token中获取
	err = global.DB.Take(&sendUser, s.SendUserID).Error
	if err != nil {
		Pub.Status = utils.ERROR
		Pub.Msg = "发送人不存在"
		return
	}
	err = global.DB.Take(&revcUser, s.RevUserID).Error
	if err != nil {
		Pub.Status = utils.ERROR
		Pub.Msg = "接收人不存在"
		return
	}

	Pub = models.MsgCreateData(s, sendUser, revcUser)
	return
}
